def main():
    # 接收用户输入
    user_input = input("请输入一个字符串（长度在0到255之间）：")

    # 基本输入合法性验证
    if len(user_input) == 0 or len(user_input) > 255:
        print("输入字符串长度必须在0到255之间！")
        return

    # 调用 letter 模块：删除非英文字符
    letters_only = keep_letters(user_input)
    print("仅保留英文字符后的结果：", letters_only)

    # 调用 reverse 模块：反转字符串
    reversed_str = reverse_string(letters_only)
    print("反转后的结果：", reversed_str)

    # 调用 enCode 模块：凯撒密码加密
    encrypted_str = caesar_cipher(reversed_str, shift=3)  # 秘钥设为3
    print("凯撒加密后的最终结果：", encrypted_str)

def keep_letters(s):
    """letter模块：保留字符串中的英文字符，删除其他字符"""
    result = []
    for char in s:
        if char.isalpha():
            result.append(char)
    return ''.join(result)

def reverse_string(s):
    """reverse模块：反转字符串（不使用递归或reversed方法）"""
    reversed_str = []
    for i in range(len(s) - 1, -1, -1):  # 从后往前遍历
        reversed_str.append(s[i])
    return ''.join(reversed_str)


def caesar_cipher(s, shift=3):
    """enCode模块：凯撒密码加密（秘钥可自行设定）"""
    encrypted = []
    for char in s:
        if char.isupper():
            # 处理大写字母
            encrypted_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
        elif char.islower():
            # 处理小写字母
            encrypted_char = chr((ord(char) - ord('a') + shift) % 26 + ord('a'))
        else:
            # 非字母字符（理论上不会出现，因为letter模块已过滤）
            encrypted_char = char
        encrypted.append(encrypted_char)
    return ''.join(encrypted)

if __name__ == "__main__":
    main()